From: Alban Browaeys Date: Sun, 20 May 2012 21:36:27 +0000 (+0200) Subject: popupMenu: do not overflow the currentItems X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~6511 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=f850e92524f49fff5af809be80dbb9825eb48c66;p=gnome-shell.git popupMenu: do not overflow the currentItems Do not overflow currentItems array. If the Menu section is filled via model items-changed callback the position in the model passed to the RemoteMenu _modelChanged can be a to be added asynchronously action-added. Thus the item does not yet exists in the currentItems. https://bugzilla.gnome.org/show_bug.cgi?id=676447 --- diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 368442db4..9efb6f74d 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -1920,7 +1920,7 @@ const RemoteMenu = new Lang.Class({ while (k0 < currentItems.length && currentItems[k0]._ignored) k0++; // find the right menu item matching the model item - for (j0 = 0; j0 < position; j0++, k0++) { + for (j0 = 0; k0 < currentItems.length && j0 < position; j0++, k0++) { if (currentItems[k0]._ignored) k0++; } @@ -1930,7 +1930,7 @@ const RemoteMenu = new Lang.Class({ for (k = k0; k < currentItems.length; k++) currentItems[k].destroy(); } else { - for (j = j0, k = k0; j < j0 + removed; j++, k++) { + for (j = j0, k = k0; k < currentItems.length && j < j0 + removed; j++, k++) { currentItems[k].destroy(); if (currentItems[k]._ignored)